using TodoApp.Application;
using TodoApp.Domain;

namespace TodoApp.Infrastructure;

public class TodoRepository : ITodoRepository
{
    private readonly TodoDbContext _context;

    public TodoRepository(TodoDbContext context)
    {
        _context = context;
    }


    public Todo GetTodoById(long id)
    {
        var todo = _context.Todos.FirstOrDefault(t => t.Id == id);
        return todo;
    }

    public void AddTodo(Todo todo)
    {
        _context.Todos.Add(todo);
        _context.SaveChanges();
    }

    public List<Todo> GetAllTodos()
    {
        return _context.Todos.ToList();
    }

    public void UpdateTodo(Todo todo)
    {
        _context.Todos.Update(todo);
        _context.SaveChanges();
    }

    public void DeleteTodo(long id)
    {
        var todo = _context.Todos.FirstOrDefault(t => t.Id == id);
        _context.Todos.Remove(todo);
        _context.SaveChanges();
    }
}